package com.contain2.selfmap.demo1;

import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 自定义map
 * 
 * @author Administrator
 * 
 * @param <K>
 * @param <V>
 */
public class SlowMap<K, V> extends AbstractMap<K, V> {

	private List<K> keys = new ArrayList<K>();
	private List<V> values = new ArrayList<V>();

	public V put(K key, V value) {
		V oldV = get(key);
		if (!keys.contains(key)) {
			keys.add(key);
			values.add(value);
		} else {
			values.set(keys.indexOf(key), value);
		}
		return oldV;
	}

	public V get(Object key) {
		if (!keys.contains(key)) {
			return null;
		} else {
			return values.get(keys.indexOf(key));
		}
	}

	@Override
	public Set<java.util.Map.Entry<K, V>> entrySet() {
		// Map.Entry是一个接口，描述依赖于实现的结构，如果你要创建自己的Map类型，就必须同时定义Map.Entry的实现
		Set<Map.Entry<K, V>> set = new HashSet<Map.Entry<K, V>>();
		Iterator<K> ki = keys.iterator();
		Iterator<V> vi = values.iterator();
		while (ki.hasNext()) {
			set.add(new MapEntry<K, V>(ki.next(), vi.next()));
		}
		return set;
	}

	public static void main(String[] args) {

	}

}
